<?php

class MicuentaController extends Controller
{
        
        public  $defaultAction = 'perfil';
        public $layout='//layouts/column2';

        
        public function init() {
            Yii::app()->theme = 'admin';
        }
        
        public function filters()
	{
		return array(
			'accessControl', // perform access control for CRUD operations
		);
	}
        
        public function accessRules()
	{
		return array(
			array('allow',  // allow all users to perform 'index' and 'view' actions
				'roles'=>array('sysadmin','Usuario'),
			),
			array('deny',  // deny all users
				'users'=>array('*'),
			),
		);
	}
    
	public function actionIndex()
	{
		$this->render('index');
	}
	
	public function actionRecuperar(){
		$model=new Usuarios('recuperar');
		// collect user input data
		if(isset($_POST['Usuarios']))
		{
			$model->attributes=$_POST['Usuarios'];
			// validate user input and redirect to the previous page if valid
			if($model->validate()){
				//usuario es valido, generamos nueva contrase�a y mandamos por correo
				$usuario = Usuarios::model()->find('Correo=:Correo', array(':Correo'=>$model->Correo));
				if ($usuario!=null){
					//Enviamos correo
					$correo = new Correo();
					
					//Generamos password aleatorio
					$length = 10;
					$chars = array_merge(range(0,9), range('a','z'), range('A','Z'));
					shuffle($chars);
					$nuevaClave = implode(array_slice($chars, 0, $length));
					
					$usuario->Clave = md5($nuevaClave);
					$usuario->save();
					
			        $correo->recuperarCuenta($usuario->Correo, $usuario->Nombre." ".$usuario->Apellidos, $nuevaClave, $usuario->Username);
					Yii::app()->user->setFlash('success',"Tu contrase&ntilde;a fue reseteada con exito, se te envio la nueva a tu correo electr&oacute;nico!");
					$this->redirect(array('micuenta/gracias'));
				}
			}
		}else{
			// display the login form
			$this->render('recuperar',array('model'=>$model));
		}
	}
	
	public function actionActualizarClave(){ 
		//$model->setScenario('actualizarClave');
		$model = new Usuarios('actualizarClave');
		if(isset($_POST['Usuarios']))
	    {
			$model->attributes=$_POST['Usuarios'];
			if($model->validate()){
				$usuario = Usuarios::model()->findByPk(Yii::app()->user->getState('idUsuario'));

		    	if($usuario->Clave==md5($model->Clave)){
					$usuario->Clave = md5($model->ClaveNueva);
		        	if($usuario->save()){
		        		Yii::app()->user->setFlash('success',"Datos actualizados!");
		            	$this->redirect(array('micuenta/gracias'));
					}else{
						Yii::app()->user->setFlash('error',"Ocurrio un error al actualizar clave, intente nuevamente!");
		            	$this->redirect(array('micuenta/gracias'));
					}
				}else{
					$model->addError('Clave', 'La clave actual es incorrecta');
				}
			}
	        
	    }
		
		$this->render('actualizarclave', array('model'=>$model));
	}
	
	public function actionActualizarFoto(){ 
		$model = Usuarios::model()->findByPk(Yii::app()->user->getState('idUsuario'));
		$model->setScenario('actualizarFoto');
		if(isset($_POST['Usuarios']))
	    {
	        $model->attributes=$_POST['Usuarios'];
			$model->Foto = CUploadedFile::getInstance($model, 'Foto');
			if($model->validate()){
				$nombreFoto = md5($model->Foto.microtime()).'.'.$model->Foto->getExtensionName();
				$model->Foto->saveAs(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto);
				$model->Foto = 'usuario_'.$nombreFoto;
				
				//por getimagesize
				$imageinfo = getimagesize(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto);
				if($imageinfo['mime'] == 'image/jpeg'){
					if(CFileHelper::getMimeType(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto)=="image/jpeg"){
						if($model->save()){
							
							//hagamos unos thumbs
							Yii::import("ext.EPhpThumb.EPhpThumb");

							$thumb=new EPhpThumb();
							$thumb->init(); //this is needed

							//chain functions
							$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto)->resize(75,75)->save(Yii::app()->basePath.'/../fotos/mini_usuario_'.$nombreFoto);
							$thumb->create(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto)->resize(150,150)->save(Yii::app()->basePath.'/../fotos/medio_usuario_'.$nombreFoto);
							
							
				        	Yii::app()->user->setFlash('success',"Datos actualizados!");
				            $this->redirect(array('micuenta/gracias'));
				        }
					}else{
						//borrar imagen, alerta
						unlink(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto);
						Yii::app()->user->setFlash('error',"Ocurrio un error, intenta nuevamente. Recuerda que solo se permiten formato jpg!");
						$this->redirect(array('micuenta/gracias'));
					}
				}else{
					//borrar imagen, alerta
					unlink(Yii::app()->basePath.'/../fotos/usuario_'.$nombreFoto);
					Yii::app()->user->setFlash('error',"Ocurrio un error, intenta nuevamente. Recuerda que solo se permiten formato jpg!");
					$this->redirect(array('micuenta/gracias'));
				}
		        
				
			}
	    }
		
		$this->render('actualizarFoto', array('model'=>$model));
	}
	
	public function actionActualizar(){ 
		$model = Usuarios::model()->findByPk(Yii::app()->user->getState('idUsuario'));
		$model->setScenario('actualizar');
		if(isset($_POST['Usuarios']))
	    {
	        $model->attributes=$_POST['Usuarios'];
	        if($model->save()){
	    	
	        	
	        	Yii::app()->user->setFlash('success',"Datos actualizados!");
	            $this->redirect(array('micuenta/gracias'));
	        }
	    }
		
		$this->render('actualizar', array('model'=>$model));
	}
	
	public function actionPerfil(){ 
		$model = Usuarios::model()->findByPk(Yii::app()->user->getState('idUsuario'));
		$this->render('perfil', array('model'=>$model));
	}
	
	public function actionRegistro()
	{
		$model = new Usuarios;
		$model->setScenario('registro');
		$this->performAjaxValidation($model);
		
		if(isset($_POST['Usuarios']))
	    {
	        $model->attributes=$_POST['Usuarios'];
	        if($model->save()){
	        	
	        	Yii::app()->user->setFlash('success',"Datos guardados, revisa tu correo para activar tu cuenta!");
	            $this->redirect(array('micuenta/gracias'));
	        }
	    }
	    
	    $this->render('registro', array('model'=>$model));
	}
	
	protected function performAjaxValidation($model)
	{
	    if(isset($_POST['ajax']) && $_POST['ajax']==='usuarios-registro-form')
	    {
	        echo CActiveForm::validate($model);
	        Yii::app()->end();
	    }
	}
	
	public function actionGracias()
	{
		 $this->render('gracias');
	}
	
	public function actionValidarcuenta($codigo = ''){
		$Usuarios = new CDbCriteria;
		$Usuarios->condition='CodigoValidacion=:CodigoValidacion';
		$Usuarios->params=array(':CodigoValidacion'=>$codigo);
		$registro=Usuarios::model()->find($Usuarios); // $params is not needed
 		
		
 
		if($registro!=null){
			if ($registro->Status==0){
 
				//Cambiamos el status a activada
				$usuarioRegistro=Usuarios::model()->findByPk($registro->idUsuario);
				$usuarioRegistro->Status=1;
				$usuarioRegistro->save(false); 
 				Yii::app()->user->setFlash('success',"Tu cuenta se activo correctamente, puedes ingresar y participar en el sitio!");
			}elseif($registro->Status==1){
				Yii::app()->user->setFlash('notice',"Tu cuenta ya fue activada no necesitas repetir este paso, puedes logearte y participar en el sitio!");
			}	
		}else{
			Yii::app()->user->setFlash('error',"El codigo de validación es incorrecto!");                        
		}
		$this->render('gracias');
	}
	
	/**
	 * Displays the login page
	 */
	public function actionLogin()
	{
		$model=new LoginForm;

		// if it is ajax validation request
		if(isset($_POST['ajax']) && $_POST['ajax']==='login-form')
		{
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}

		// collect user input data
		if(isset($_POST['LoginForm']))
		{
			$model->attributes=$_POST['LoginForm'];
			// validate user input and redirect to the previous page if valid
			if($model->validate() && $model->login()){
				//usuario es valido, registremos fecha_ultima_visita
				
				$this->redirect(Yii::app()->user->returnUrl);
			}
		}
		// display the login form
		$this->render('login',array('model'=>$model));
	}
	
	/**
	 * Logs out the current user and redirect to homepage.
	 */
	public function actionLogout()
	{
		Yii::app()->user->logout();
		$this->redirect(Yii::app()->homeUrl);
	}
	
	// Uncomment the following methods and override them if needed
	/*
	public function filters()
	{
		// return the filter configuration for this controller, e.g.:
		return array(
			'inlineFilterName',
			array(
				'class'=>'path.to.FilterClass',
				'propertyName'=>'propertyValue',
			),
		);
	}

	public function actions()
	{
		// return external action classes, e.g.:
		return array(
			'action1'=>'path.to.ActionClass',
			'action2'=>array(
				'class'=>'path.to.AnotherActionClass',
				'propertyName'=>'propertyValue',
			),
		);
	}
	*/
}